package com.tozed.android.launcher;

import android.content.Context;
import android.text.InputFilter;
import android.text.Spanned;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.widget.EditText;
import android.widget.Toast;
import com.tozed.android.launcher.R;

public class FolderEditText extends EditText {

    private Folder mFolder;
    private static Toast sToast = null;
    private InputFilter.LengthFilter mLengthFilter = new InputFilter.LengthFilter(1024) {
        @Override
        public CharSequence filter(CharSequence source, int start, int end,
                Spanned dest, int dstart, int dend) {
            int keep = 1024 - (dest.length() - (dend - dstart));
            if (keep < (end - start)) {
                showWarningToast();
            }
            return super.filter(source, start, end, dest, dstart, dend);
        }
    };
    protected void showWarningToast() {
        if(sToast != null) {
            sToast.cancel();
        }
        sToast = Toast.makeText(getContext(), R.string.max_input, Toast.LENGTH_SHORT);
        sToast.show();
    }
    public FolderEditText(Context context) {
        super(context);
        setFilters(new InputFilter[] {mLengthFilter});
    }

    public FolderEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        setFilters(new InputFilter[] {mLengthFilter});
    }

    public FolderEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setFilters(new InputFilter[] {mLengthFilter});
    }

    public void setFolder(Folder folder) {
        mFolder = folder;
    }

    @Override
    public boolean onKeyPreIme(int keyCode, KeyEvent event) {
        // Catch the back button on the soft keyboard so that we can just close the activity
        if (event.getKeyCode() == android.view.KeyEvent.KEYCODE_BACK) {
            mFolder.doneEditingFolderName(true);
        }
        return super.onKeyPreIme(keyCode, event);
    }
}
